@@ -122,17 +122,19 @@ module Agents |
||
122 | 122 |
|
123 | 123 |
def receive(incoming_events) |
124 | 124 |
incoming_events.each do |event| |
125 |
- outgoing = interpolated(event)['payload'].presence || {} |
|
126 |
- if boolify(interpolated['no_merge']) |
|
127 |
- handle outgoing, event.payload |
|
128 |
- else |
|
129 |
- handle outgoing.merge(event.payload), event.payload |
|
125 |
+ interpolate_with(event) do |
|
126 |
+ outgoing = interpolated['payload'].presence || {} |
|
127 |
+ if boolify(interpolated['no_merge']) |
|
128 |
+ handle outgoing, event.payload, headers(interpolated[:headers]) |
|
129 |
+ else |
|
130 |
+ handle outgoing.merge(event.payload), event.payload, headers(interpolated[:headers]) |
|
131 |
+ end |
|
130 | 132 |
end |
131 | 133 |
end |
132 | 134 |
end |
133 | 135 |
|
134 | 136 |
def check |
135 |
- handle interpolated['payload'].presence || {} |
|
137 |
+ handle interpolated['payload'].presence || {}, headers |
|
136 | 138 |
end |
137 | 139 |
|
138 | 140 |
private |
@@ -160,9 +162,8 @@ module Agents |
||
160 | 162 |
} |
161 | 163 |
end |
162 | 164 |
|
163 |
- def handle(data, payload = {}) |
|
165 |
+ def handle(data, payload = {}, headers) |
|
164 | 166 |
url = interpolated(payload)[:post_url] |
165 |
- headers = headers() |
|
166 | 167 |
|
167 | 168 |
case method |
168 | 169 |
when 'get', 'delete' |
@@ -33,7 +33,7 @@ describe Agents::PostAgent do |
||
33 | 33 |
stub_request(:any, /:/).to_return { |request| |
34 | 34 |
method = request.method |
35 | 35 |
@requests += 1 |
36 |
- @sent_requests[method] << req = OpenStruct.new(uri: request.uri) |
|
36 |
+ @sent_requests[method] << req = OpenStruct.new(uri: request.uri, headers: request.headers) |
|
37 | 37 |
case method |
38 | 38 |
when :get, :delete |
39 | 39 |
req.data = request.uri.query |
@@ -137,6 +137,18 @@ describe Agents::PostAgent do |
||
137 | 137 |
expect(uri.path).to eq('/a_variable') |
138 | 138 |
expect(uri.query).to eq("existing_param=existing_value") |
139 | 139 |
end |
140 |
+ |
|
141 |
+ it "interpolates outgoing headers with the event payload" do |
|
142 |
+ @checker.options['headers'] = { |
|
143 |
+ "Foo" => "{{ variable }}" |
|
144 |
+ } |
|
145 |
+ @event.payload = { |
|
146 |
+ 'variable' => 'a_variable' |
|
147 |
+ } |
|
148 |
+ @checker.receive([@event]) |
|
149 |
+ headers = @sent_requests[:post].first.headers |
|
150 |
+ expect(headers["Foo"]).to eq("a_variable") |
|
151 |
+ end |
|
140 | 152 |
end |
141 | 153 |
|
142 | 154 |
describe "#check" do |
@@ -199,6 +211,15 @@ describe Agents::PostAgent do |
||
199 | 211 |
expect(@sent_requests[:post][0].data).to eq('<test>hello</test>') |
200 | 212 |
end |
201 | 213 |
|
214 |
+ it "interpolates outgoing headers" do |
|
215 |
+ @checker.options['headers'] = { |
|
216 |
+ "Foo" => "{% credential aws_key %}" |
|
217 |
+ } |
|
218 |
+ @checker.check |
|
219 |
+ headers = @sent_requests[:post].first.headers |
|
220 |
+ expect(headers["Foo"]).to eq("2222222222-jane") |
|
221 |
+ end |
|
222 |
+ |
|
202 | 223 |
describe "emitting events" do |
203 | 224 |
context "when emit_events is not set to true" do |
204 | 225 |
it "does not emit events" do |